(de sort (x) (flatten (mktree x nil))) (de mktree (x a) (if (null x) a (mktree (cdr x) (add (car x) a)))) (de add (a u) (cond ((null u) [a nil nil]) ((< a (car u)) [(car u) (add a (cadr u)) (caddr u)]) (t [(car u) (cadr u) (add a (caddr u))]))) (de flatten (x) (if (null x) nil (append (flatten (cadr x)) (cons (car x) (flatten (caddr x))))))